From baf7770f8fdd39841460c76f9f6e2196e62b7919 Mon Sep 17 00:00:00 2001 From: Jonathan Giddy Date: Sat, 21 Oct 2017 16:15:52 +0100 Subject: [PATCH] Add a newline before appended VCS ignore lines --- src/cargo/ops/cargo_new.rs | 4 ++-- tests/init.rs | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 2 deletions(-) diff --git a/src/cargo/ops/cargo_new.rs b/src/cargo/ops/cargo_new.rs index 9c597df85..10174d0a1 100644 --- a/src/cargo/ops/cargo_new.rs +++ b/src/cargo/ops/cargo_new.rs @@ -393,13 +393,13 @@ fn mk(config: &Config, opts: &MkOptions) -> CargoResult<()> { let name = opts.name; let cfg = global_config(config)?; // Please ensure that ignore and hgignore are in sync. - let ignore = ["/target/\n", "**/*.rs.bk\n", + let ignore = ["\n", "/target/\n", "**/*.rs.bk\n", if !opts.bin { "Cargo.lock\n" } else { "" }] .concat(); // Mercurial glob ignores can't be rooted, so just sticking a 'syntax: glob' at the top of the // file will exclude too much. Instead, use regexp-based ignores. See 'hg help ignore' for // more. - let hgignore = ["^target/\n", "glob:*.rs.bk\n", + let hgignore = ["\n", "^target/\n", "glob:*.rs.bk\n", if !opts.bin { "glob:Cargo.lock\n" } else { "" }] .concat(); diff --git a/tests/init.rs b/tests/init.rs index 47efa3b97..c0b3fcd75 100644 --- a/tests/init.rs +++ b/tests/init.rs @@ -335,6 +335,40 @@ fn gitignore_appended_not_replaced() { assert!(contents.contains(r#"qqqqqq"#)); } +#[test] +fn gitignore_added_newline_if_required() { + fs::create_dir(&paths::root().join(".git")).unwrap(); + + File::create(&paths::root().join(".gitignore")).unwrap().write_all(b"first").unwrap(); + + assert_that(cargo_process("init").arg("--lib") + .env("USER", "foo"), + execs().with_status(0)); + + assert_that(&paths::root().join(".gitignore"), existing_file()); + + let mut contents = String::new(); + File::open(&paths::root().join(".gitignore")).unwrap().read_to_string(&mut contents).unwrap(); + assert!(contents.starts_with("first\n")); +} + +#[test] +fn mercurial_added_newline_if_required() { + fs::create_dir(&paths::root().join(".hg")).unwrap(); + + File::create(&paths::root().join(".hgignore")).unwrap().write_all(b"first").unwrap(); + + assert_that(cargo_process("init").arg("--lib") + .env("USER", "foo"), + execs().with_status(0)); + + assert_that(&paths::root().join(".hgignore"), existing_file()); + + let mut contents = String::new(); + File::open(&paths::root().join(".hgignore")).unwrap().read_to_string(&mut contents).unwrap(); + assert!(contents.starts_with("first\n")); +} + #[test] fn cargo_lock_gitignored_if_lib1() { fs::create_dir(&paths::root().join(".git")).unwrap(); -- 2.30.2